Binding a function call in an application entails replacing a symbolic address for the function with a real machine address. Thus, the binding determines which function (i.e. the section of code that implements the function) to execute at runtime. When binding occurs during compilation, it is “early bound.” In contrast, when binding occurs at runtime, it is “late bound.” Programming languages may generally be categorized as being either early bound or late bound.
The choice of function call binding time (i.e. early bound vs. late bound) is a trade-off between performance of the code at runtime (early binding is faster at runtime) and ease of programming for the programmer (late bound programs are easier to write). Currently, a programmer must decide what is more important: the time it takes for the programmer to write the program or the time it takes for the program to execute. Unfortunately, this is often a difficult choice to make. There is no mechanism in conventional systems to balance the trade-off effectively.